package com.scau.RBAC.service;

import com.scau.RBAC.model.entity.Role;
import com.scau.RBAC.model.entity.Permission;
import java.util.List;

/**
 * 角色服务接口，定义角色管理的业务逻辑方法
 */
public interface RoleService {
    // 角色CRUD操作
    Role createRole(Role role);
    void updateRole(Role role);
    void deleteRole(Long roleId);
    Role getRoleById(Long roleId);
    Role getRoleByCode(String roleCode);
    List<Role> getAllRoles();
    List<Role> getRolesByCondition(Role condition);

    // 角色权限管理
    void assignPermissionToRole(Long roleId, String permissionCode);
    void removePermissionFromRole(Long roleId, String permissionCode);
    void updateRolePermissions(Long roleId, List<String> permissionCodes);
    List<Permission> getRolePermissions(Long roleId);
    List<Role> getRolesByPermission(String permissionCode);

    // 角色用户管理
    List<Role> getUserRoles(Long userId);
    void updateUserRoles(Long userId, List<Long> roleIds);
    List<Long> getRoleUserIds(Long roleId);

    // 批量操作
    void batchCreateRoles(List<Role> roles);
    void batchUpdateRoleStatus(List<Long> roleIds, boolean status);
    boolean isRoleInUse(Long roleId);
}